package com.info.zhiduoduo.common.configs;

import com.info.zhiduoduo.common.utils.StringUtil;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import lombok.Data;

@Component
@PropertySource(value = "zhaoshangpay-${spring.profiles.active}.properties")
@ConfigurationProperties("zhaoshangpay")
@Data
public class ZhaoShangPayConfig {

	/** 用户id */
	private String userId;

	/** 请求地址 */
	private String url;

	/** 银行公钥 */
	private String bankPubKey;
	/** 用户SM私钥 */
	private String privkey;
	/** 用户的对称密钥 */
	private String sm4key;

	/** 代发API */
	private String agentPay;

	/** 代发结果查询API */
	private String queryAgentPay;

	/** 代发明细查询API */
	private String queryAgentPayDetailed;

	/** 查询银行账号信息API */
	private String queryAccountInfo;

	/** 批量查询余额API */
	private String queryBalance;

	/** 查询代发代扣交易代码API */
	private String queryTransactionCode;

	/** 查询代发退票明细 */
	private String queryAgentPayRetreat;

	/** 企银支付业务查询 */
	private String queryTransactionOutline;

	/** 账户交易信息查询 */
	private String queryTransactionInfo;

	/** 根据流水号查询单笔交易回单 */
	private String queryElectronReceipt;

	/** 招商银行记账子单元的长度 */
	private int ledgerLength;
	/** 招行交易管家模式代码 */
	private String tradeBulterModeCode;
	/** 5.5.2.1新增记账子单元 NTDMAADD。该接口用于为真实账号新增记子单元。 */
	private String addSubLedger;
	/** 5.5.2.4 关闭记账子单元NTDMADLT。该接口用于关闭一个或者多个指定的记账子单元。 */
	private String deleteSubLedger;
	/** 5.5.2.4 修改记账子单元NTDMAMNT  该接口用于修改新增记账子单元的设置信息*/
	private String updateSubLedger;
	/** 5.5.2.15查询记账子单元余额NTDMABAL。该接口用于查询记账子单元的余额.。 */
	private String querySubLedgerBalance;
	/** 5.5.2.3 查询记账子单元信息NTDMALST。用于查询真实账号下指定的或者所有的记账子单元的信息。 */
	private String queryLedgerStatus;
	/** 5.5.2.21记账子单元内部转账NTDMATRX。通过该接口客户可以进行默认记账子单元与非默认记账子单元之间、非默认记账子单元之间的内部资金划转。 */
	private String ledgerPay;
	/** 5.5.2.13查询记账子单元当天交易NTDMTLST。该接口用于查询记账子单元的当日交易明细包括交易时间、借贷金额、币种、收付方名称、收付方账号、交易摘要、记账子单元编号、记账子单元名称、记账流水号以及是否关联付方匹配等信息。 */
	private String queryLedgerTodayTrade;
	/** 5.5.2.14查询记账子单元历史交易NTDMTHLS
	 * 。该接口用于查询记账子单元的历史交易明细，即已记入记账子单元的历史交易，包括交易日期、交易时间、借贷金额、币种、收付方名称、收付方账号、交易摘要、记账子单元编号、记账子单元名称、记账方式、记账流水号以及是否关联付方匹配等信息。 */
	private String queryLedgerHistoryTrade;

	/**
	 * 组装记账子单元编号，正式环境长度为6位。
	 *
	 * @param subLegderId 传0代表默认子单元
	 * @return
	 */
	public String ledgerNo(int subLegderId) {
		return StringUtil.toFixedLengthNum(subLegderId, ledgerLength);
	}
}
